package TokensDelLenguaje;

public class Token_Cadena extends Token implements Cloneable{
    
  protected String contenido;

  public Token_Cadena() {
    super(Tokens.ilegal);
    contenido = "@";
  }
  public Token_Cadena(String valor) {
    setId(Tokens.cadena);
    this.contenido = valor;
    salto = false;
  }
  
    @Override
  public String getCadena() {
    return contenido;
  }
  
    @Override
  public void setCadena(String s) {
      contenido = s;
  }

    @Override
   public boolean equals(Object o) {
    if(super.equals(o)) {
      if(contenido != null) {
        if(contenido.equals(((Token)o).getCadena())) {
          return true;
        }
      }
    }
    return false;
  }

    @Override
  public String toString() {
    String s = super.toString();
    if(contenido != null) {
      return "[ " + s + ": " + contenido + " ]";
    }
    else {
      return s + ": ¡VALOR NO DEFINIDO!";
    }
  }

    @Override
   public int hashCode() {
    if(contenido != null) {
      return contenido.hashCode();
    }
    else {
      return super.hashCode();
    }
  }
   
@Override
  public Object clone(){
    
       Token_Cadena copia = null;
      
       copia = (Token_Cadena)super.clone();
       copia.setCadena(this.getCadena());
              
       return copia;
   }
    
    @Override
    public String getNombre(){
        String s = "_" + contenido.replaceAll(" ", "");
        for(int i=0; i<contenido.length(); i++){
            char c = contenido.charAt(i);
            if( !((c>='a' && c<='z') || (c>='A' && c<='Z') || (c>='0' && c<='9') )){
                s.replaceAll("" + c, "");
            }
        }        
        return s;
    }
   
}
